PostgreSQL 2022 年度摘要
2022 年里一些有趣的 PostgreSQL 更新摘要
DB-Engines 排名 - PostgreSQL 是 2022年的排在前三的 DBMS 之一。
PostgreSQL 15 发布
2022 年发布的小版本 (Minor version)。
在 2022年进入 EOL (End of Life/退役) 的 PostgreSQL 版本。
在 2022年新出现的扩展。
被发现并修补的安全漏洞。
Ora2Pg 加入了更多简化迁移到 PostgreSQL 的功能。
2022 年的核心小组报告。
DB-Engines 排名 - PostgreSQL 在 2022 年排在前三
PostgreSQL 15 发布 - 一些功能
PostgreSQL 15 的特点和改进
从 PostgreSQL 15 开始支持 SQL MERGE 命令。
使用 pg_baesbackup 进行压缩备份。现在它同时支持服务端和客户端 - gzip、LZ4 和 Zstandard 压缩。
服务器日志输出结构现在可以使用 JSON ,通过把 GUC log_destination 设置为 jsonlog。
pg_stat_statements 现在可以为 temp 收集 I/O 时间统计信息。
允许逻辑复制中的 PUBLICATION 通过行级和列级的限制过滤其内容。CREATE PUBLICATION 命令现在支持指定一个 SCHEMA 的所有表以及它将来要创建的表。
在创建唯一约束或索引时,可以选择使用 NULLS NOT DISTINCT 子句来避免将 NULL 条目视为 DISTINCT 的行为。
Postgres 15 现在支持 NUMERIC 列的负刻度或大于精度的刻度。
非超级用户现在可以被授予 GUC 参数的 SET 和 ALTER SYSTEM 权限。
非超级用户可以通过 pg_checkpoint 角色发布 CHECKPOINT。
在对单一列进行排序时的巨大性能改进。对单列进行排序时,将不再涉及存储整个元组。
Generation memory allocator 而不是 "aset "分配器现在允许利用较少的内存进行排序操作。
支持 postgres_fdw 服务器上的并行提交,优化了分布式工作负载。
一个新的模块 pg_walinspect 现在可以使用 SQ L函数来检查 WAL 段的内容。这类似于 pg_waldump,但可以通过 SQL 访问。
改进了窗口函数的查询性能:row_number(), rank(), dense_rank() 和 count(),以及在引用多个 Foreign Tables 时,可以通过并行的方式进行扫描。
在 PostgreSQL 15 中,引用分区表的查询计划时间得到进一步改善。
CLUSTER 命令现在支持在分区表上使用。
SELECT DISTINCT 现在可以被并行化,可以用更多的并行工作者来加速执行。
增加了新的正则表达式函数 regexp_count(), regexp_instr(), regexp_like(), 和 regexp_substr(),以便与其他关系型数据库兼容。
random() 函数的算法得到了进一步改进。
2022 年发布的小版本 (Minor version)
PostgreSQL 15 - 15.1
PostgreSQL 14 - 14.2, 14.3, 14.4, 14.5, 14.6
PostgreSQL 13 - 13.6, 13.7, 13.8, 13.9
PostgreSQL 12 - 12.10, 12.11, 12.12, 12.13
PostgreSQL 11 - 11.15, 11.16, 11.17, 11.18
PostgreSQL 10 - 10.20, 10.21, 10.22, 10.23 (此版本已过期)
在 2022 年进入 EOL (End of Life/退役) 的版本
2022 年新出现的扩展
pg_ivm: pg_ivm 模块提供 PostgreSQL 中物化视图的增量维护(IVM)。与 REFRESH MATERIALIZED VIEW 所需的重新计算相比,它可以更有效地更新物化视图。
PGSpider: PGSpider Extension(pgspider_ext)是为分布式大数据构建高性能 SQL 集群引擎的一个扩展。pgspider_ext 使 PostgreSQL 能够使用 Foreign Data Wrapper(FDW) 访问一些数据源,并纵向检索分布式数据源。
PLHaskell: 这个项目是 PostgreSQL 的一个 "程序语言 "扩展,允许在 SQL 代码中执行 Haskell 的代码。
Rapidrows: RapidRows 是一个开源的、零依赖的、单二进制的 API 服务器,它可以被配置为运行 SQL 查询、执行预设的工作和将 PostgreSQL 通知转发到 websockets。
pg_enquo: 一个PostgreSQL扩展,提供加密查询操作(enquo)。
pg_show_rewritten_query: 显示在分析和重写步骤之后,将被执行的查询(PostgreSQL 15+)。
oracle_fnd : 使用自定义变量模拟 FND_GLOBAL 和 FND_PROFILE 包的 API 函数 (由 MigOps 发布)。
pg_wkhtmltopdf: PostgreSQL 使用 Webkit (QtWebKit) 实现转换 HTML 为 PDF。
pg_rowalesce: 该扩展的杀手级功能是 rowalesce() 函数。rowalesce() 就像 coalesce(),但针对的是行和其他复合类型。从其任意数量的参数行中,对于每个字段/列,rowalesce()从该字段/列有非空值的第一行中取值。
pg_mupdf: 在 PostgreSQL 里,使用 MuPDF 将 HTML 转换成 PDF。
pg_mockable: 用来创建其他 Schema 里函数的 Mock 版本。
pg_migrate: pg_migrate 是一个 PostgreSQL 扩展和 CLI,可以让你对表和索引进行 Schema 变更。与 ALTER TABLE 不同的是,它采用的是在线变更,在迁移过程中不需要对被处理的表持有长期的独占锁。它建立了一个目标表的副本,先在副本上进行变更,然后再将它们交换。
pg_injection: PostgreSQL 对 sql 注入的检测。
pg_icu_parser: 使用 ICU boundary analysis 的 PostgreSQL 文本搜索 Parser。
pg_diffix: 用于强动态匿名化 (strong dynamic anonymization)。它确保简单 SQL 查询的答案是匿名的。欲了解更多信息,请访问 Open Diffix 网站。
notify_now: 这个简单的扩展允许你使用内置的 PostgreSQL NOTIFY API 从一个查询返回多个响应。
lower_quantile: 一个计算 lower quantile 的扩展。
被发现并修补的安全漏洞
PostgreSQL 11 - 2
PostgreSQL 12 - 2
PostgreSQL 13 - 2
PostgreSQL 14 - 2
Ora2Pg 加入了更多简化迁移到 PostgreSQL 的功能
2022 年核心小组报告
总结
迁移到PostgreSQL,不需要支付任何许可费,有更好的功能支持企业。
迁移到云端,减少基础设施维护成本。